/**
 * 版权说明 ：Copyright (C), 1988-1999, Fujitsu Tech. Co., Ltd.
 * 文件名称 : TimeUtils.java
 * 版           本：LBook_V001
 * 作           者：Brook
 * 创建时间 ：2012-9-28
 * 修改作者 ：Brook
 * 修改时间 ：2012-9-28
 * 详细描述 ：请在此详细描述。
 */
package com.fnst.lbook.modules.common.utils;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 类型名称 ：TimeUtils 版 本：LBook_V001 作 者 ：Brook 创建时间 ：2012-9-28 下午05:39:21 修改作者
 * ：Brook 修改时间 ：2012-9-28 下午05:39:21 功能概述 ：请概要描述类型的功能。
 */
public class TimeUtils implements Serializable {

	/**
	 * 对象序列化的编号
	 */
	private static final long serialVersionUID = 5373992690117687236L;

	private static TimeUtils timeUtils = new TimeUtils();

	private TimeUtils() {}

	public static TimeUtils getInstance() {
		return timeUtils;
	}

	/**
	 * 函数名称 ：maxium4Month
	 * 作          者 ：Brook
	 * 创建时间 ：2012-9-28 下午05:58:29
	 * 修改作者 ：Brook
	 * 修改时间 ：2012-9-28 下午05:58:29
	 * 参数列表 ：@param calender
	 * 参数列表 ：@param year
	 * 返   回  值 ：int
	 * 功能概述 ：计算某一月份的最大天数。
	 */
	public static int maxium4Month(Calendar calender, int year) {
		int maxinum = 0;

		Calendar time = Calendar.getInstance();
		time.clear();
		time.set(Calendar.YEAR, year);
		time.set(Calendar.MONTH, year - 1);
		maxinum = time.getActualMaximum(Calendar.DAY_OF_MONTH);

		return maxinum;
	}

	/**
	 * 函数名称 ：date2Calender
	 * 作          者 ：Brook
	 * 创建时间 ：2012-9-28 下午06:01:27
	 * 修改作者 ：Brook
	 * 修改时间 ：2012-9-28 下午06:01:27
	 * 参数列表 ：@param date
	 * 返   回  值 ：Calendar
	 * 功能概述 ：Date转化为Calendar。
	 */
	public Calendar date2Calender(Date date){
		Calendar calender=Calendar.getInstance(); 
		calender.setTime(date);
		
		return calender;
	}
	
	/**
	 * 
	 * 函数名称 ：getIntervalDays4Calendar
	 * 作          者 ：Brook
	 * 创建时间 ：2012-10-8 下午02:25:28
	 * 修改作者 ：Brook
	 * 修改时间 ：2012-10-8 下午02:25:28
	 * 参数列表 ：@param sCalendar
	 * 参数列表 ：@param eCalendar
	 * 返   回  值 ：int
	 * 功能概述 ：计算两个任意时间中间的间隔天数.(Calendar)
	 */
	public int getIntervalDays4Calendar(Calendar sCalendar,Calendar eCalendar){
		if(sCalendar.after(eCalendar))return -1;
		
		long sl=sCalendar.getTimeInMillis(); 
		long el=eCalendar.getTimeInMillis(); 

		long ei=el-sl; 
		return (int)(ei/(1000*60*60*24));
	}
	
	/**
	 * 
	 * 函数名称 ：getIntervalDays4Date
	 * 作          者 ：Brook
	 * 创建时间 ：2012-10-8 下午02:27:09
	 * 修改作者 ：Brook
	 * 修改时间 ：2012-10-8 下午02:27:09
	 * 参数列表 ：@param sDate
	 * 参数列表 ：@param eDate
	 * 返   回  值 ：int
	 * 功能概述 ：计算两个任意时间中间的间隔天数.(Date)
	 */
	public int getIntervalDays4Date(Date sDate,Date eDate){
		if(sDate.after(eDate))return -1;
		
		long sl=sDate.getTime(); 
		long el=eDate.getTime(); 

		long ei=el-sl; 
		return (int)(ei/(1000*60*60*24));
	}
	
	/**
	 * 
	 * 函数名称 ：getSystemTime
	 * 作          者 ：Brook
	 * 创建时间 ：2012-10-8 下午02:28:40
	 * 修改作者 ：Brook
	 * 修改时间 ：2012-10-8 下午02:28:40
	 * 参数列表 ：@param rule 返回时的规则
	 * 返   回  值 ：String
	 * 功能概述 ：获取系统当前时间.
	 */
	public static String getSystemTime(String rule){ 
		Date date=new Date(); 
		SimpleDateFormat df=new SimpleDateFormat(rule); 
	
		return df.format(date); 
	}
}
